package com.dayu.behavior.interpreter;

import java.util.ArrayList;
import java.util.List;

/**
 * 解释器模式：这种模式实现了一个表达式接口，该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
 * 使用场景：
 * 1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。
 * 2、一些重复出现的问题可以用一种简单的语言来进行表达。
 * 3、一个简单语法需要解释的场景。
 *
 * 平时的场景：算术表达式、正则表达式
 */
public class InterpreterTest {

    public static void main(String[] args) {
        Context context = new Context();
        List<AbstractExpression> list = new ArrayList<>();

        list.add(new TerminalExpression());
        list.add(new NonterminalExpression());
        list.add(new TerminalExpression());
        list.add(new TerminalExpression());

        for (AbstractExpression abstractExpression : list) {
            abstractExpression.Interpret(context);
        }
    }


}
